package com.xxg.renrenorder.component;

import com.xxg.renrencommon.exception.OrderManagerException;
import com.xxg.renrenorder.dao.bean.ProductInfo;
import org.springframework.scheduling.annotation.Async;

import java.util.List;
import java.util.Map;

/**
 * 商品库存组件
 *
 * @author szj
 * @date 2021/12/14
 */
public interface ProductStockComponent {
    /**
     * 更新非带货商品的库存和销量
     *
     * @param productInfoList 商品信息
     * @throws OrderManagerException
     */
    void updateStockAndSales(List<ProductInfo> productInfoList) throws OrderManagerException;

    /**
     * 回滚非带货商品的库存和销量
     *
     * @param productInfoList 商品信息
     */
    void rollBackStockAndSales(List<ProductInfo> productInfoList);

    /**
     * 更新原商品底下所有带货商品的库存和销量
     *
     * @param goodsIds 原商品的goodsId列表
     */
    @Async
    void updateCarryProductStockAndSales(List<Integer> goodsIds);
}
